// Package types 时间类型转换
// User: 青锋真人<zengwanzhong@movee.cn>
// Datetime: 2020/2/8 11:30
package types

import "time"

// DateTimeString 格式化显示时间
// 为空时，默认转换格式为 2020-02-08 11:28:01
// 只传一个参数，如果是字符串，则表示输出时间格式，时间为当前时间。如果是时间，则表示将该时间转换 2020-02-08 11:44:08 格式
// 传了两个参数，则第一个为输出格式，第二个为时间
func DateTimeString(args ...interface{}) string {
	var t time.Time
	format := "2006-01-02 15:04:05"
	switch len(args) {
	case 1:
		switch v := args[0].(type) {
		case string:
			format = v
			t = time.Now()
		case time.Time:
			t = v
		}
	case 2:
		format = args[0].(string)
		t = args[1].(time.Time)
	default:
		t = time.Now()
	}
	return t.Format(format)
}

// ToDateTime 将指定格式的时间字符串转换为时间对象
// 第一个参数为代表时间的字符串
// 第二个参数为时间格式，默认是 2006-01-02 15:04:05
func ToDateTime(args ...string) (time.Time, error) {
	datetimeString := args[0]
	format := "2006-01-02 15:04:05"
	switch len(args) {
	case 2:
		format = args[1]
	}
	return time.ParseInLocation(format, datetimeString, time.Local)
}
